/**
 * @file vm-state-inl.h
 * @author your name (you@domain.com)
 * @brief 
 * @version 0.1
 * @date 2024-03-27
 * 
 * @copyright Copyright (c) 2024
 * 
 */
#ifndef __JSASM_VM_STATE_INL_H__
#define __JSASM_VM_STATE_INL_H__
#include "src/asm/vm-state.h"

inline const char* StateToString(StateTag state) {
    switch(state) {
        case JS:
            return "JS";
        case GC:
            return "GC";
        case PARSER:
            return "PARSER";
        case BYTECODE_COMPILER:
            return "BYTECODE_COMPILER";
        case COMPILER:
            return "COMPILER";
        case OTHER:
            return "OTHER";
        case EXTERNAL:
            return "EXTERNAL";
        case ATOMICS_WAIT:
            return "ATOMICS_WAIT";
        case IDLE:
            return "IDLE";
    }
}

template <StateTag Tag>
VMState<Tag>::VMState(StateTag previous_tag): previous_tag_(previous_tag) {

}

template <StateTag Tag> 
VMState<Tag>::~VMState() {

}

#endif // __JSASM_VM_STATE_INL_H__